package org.study.tk.boot.newcommon;

import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Service 接口基类
 *
 * @author Administrator
 */
public interface BaseUpdateService<T> {
    /**
     * 根据主键更新实体全部字段，null值会被更新
     *
     * @param record
     * @return
     */
    int updateByPrimaryKey(T record);

    /**
     * 根据主键更新属性不为null的值
     *
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(T record);

    /**
     * 根据Condition条件更新实体`record`包含的全部属性，null值会被更新
     *
     * @param record
     * @param condition
     * @return
     */
    int updateByCondition(@Param("record") T record, @Param("example") Object condition);

    /**
     * 根据Condition条件更新实体`record`包含的不是null的属性值
     *
     * @param record
     * @param condition
     * @return
     */
    int updateByConditionSelective(@Param("record") T record, @Param("example") Object condition);

    /**
     * 根据主键，批量更新属性不为null的值
     *
     * @param list
     * @return
     */
    int batchUpdateSelective(List<T> list);

    /**
     * 根据主键，批量更新实体全部字段，null值会被更新
     *
     * @param list
     * @return
     */
    int batchUpdate(List<T> list);
}
